package com.task.controller.annotation;

import java.lang.annotation.*;

/**
 * 被此注解标记的方法，会被强制扔到UI线程中执行
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Documented
public @interface UITask {

    /**
     * 被调用的方法的资源路径，它在全局任务中，都是唯一的
     *
     * @return 资源路径
     */
    String value();

    /**
     * 表示当方法调用者，正好处于UI线程时，是否将此任务作为异步UI任务。注意，当调用发生在非UI线程时，那么此变量将失去作用。
     * 注：所谓异步UI任务是指，无论调用是否发声在UI线程，都将调用Context.getUITaskDispatcher()方法将方法作为一个Runnable对象添加到UI线程队列中执行。同步是指，当调用者所在线程正好为UI线程时，
     * 则任务将不会加入到线程队列，而是直接同步执行。
     *
     * @return true：标示异步执行，false标示同步执行
     */
    boolean isAsync() default false;
}
